#! /bin/bash

# 首先，确认依赖是不是都在
# node
#   -> pm2
#   -> supervisor
#   -> cnpm (这个虽然可有可无，但是强烈建议有)
# git
# export PATH="$PATH:"
echo -e "\n脚本功能: 自动安装并配置服务器端的简单网盘功能 \n脚本作者: 十七散人 \n作者qq: 1052886775 \n脚本编写日期: 2020-9-19 \n脚本注意事项: \n  1. 出于安全考虑，本脚本会自动检测环境依赖，但不会自动安装全部环境依赖 \n  2. 本脚本仅在 CentOS_7.3 上测试有效，未在其他环境中测试过 \n  3. sudo bash 来启动脚本会导致异常，请使用 bash 即可\n\n"
echo -e "出于简化安装过程的考虑，网盘文件默认保存在 /root/scpFile \n如想更换网盘文件所在文件夹，请自行修改项目代码 或 联系开发者十七散人:1052886775\n"
echo -e "#-#-#-#-#-#-#-#-#-#-#-#-#-#- 严重警告 -#-#-#-#-#-#-#-#-#-#-#-#-#-#"
echo -e "#-#-#-#-#-#-#-#-#-#- 天网恢恢  疏而不漏 -#-#-#-#-#-#-#-#-#-#-#-#-#"
echo -e "#-#-#-#-#-#-#-#-#-#- 请勿将此项目用于非法用途 -#-#-#-#-#-#-#-#-#-#\n\n"

a=$(which git)
if [[ -x "$a" ]]; then
  echo "git 正常"
else
  echo -e "检测到尚未安装 git \n请自行安装git，或联系十七散人: 1052886775\n"
fi

a=$(which node)
if [[ -x "$a" ]]; then
  echo "node 正常"
  npm config set registry https://registry.npm.taobao.org
else
  echo -e "检测到尚未安装 node \n请自行安装node，或联系十七散人: 1052886775\n"
fi

a=$(which cnpm)
if [[ -x "$a" ]]; then
  echo "cnpm 正常"
else
  echo -e "检测到尚未安装 cnpm \n安装cnpm可能需要提供密码（密码输入时不可见）"
  sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
fi

a=$(which pm2)
if [[ -x "$a" ]]; then
  echo "pm2 正常"
else
  echo -e "检测到尚未安装 pm2 \n安装pm2可能需要提供密码（密码输入时不可见）"
  sudo cnpm i -g pm2
fi

a=$(which supervisor)
if [[ -x "$a" ]]; then
  echo "supervisor 正常"
else
  echo -e "检测到尚未安装 supervisor \n安装supervisor可能需要提供密码（密码输入时不可见）"
  sudo cnpm i -g supervisor
fi

echo -e "——————————————————————————————————— 依赖确认完毕 ————————————————————————————"
echo -e "\n开始安装代码......\n"

if test -d /root/scpFile; then
  rm -rf /root/scpFile/*
  echo "代码即将安装在 /root/scpFile ..."
else
  mkdir -p /root/scpFile
fi
echo "目录 /root/scpFile 将用于存放项目代码和网盘文件"
git clone --depth=1 https://gitee.com/SevDaisy/express_personal_pan.git /root/scpFile/code
cd /root/scpFile/code && cnpm i
mv -f /root/scpFile/code/succ.txt /root/scpFile/succ.txt

# 使端口10001能和外网通信
/usr/sbin/iptables -I INPUT -p tcp --dport 10001 -j ACCEPT
/usr/sbin/service iptables save

# 用 pm2 部署node服务
# 用 supervisor 防止node抛出异常而崩溃
pm2 start npm --watch --name net_U_Pan -- run serve
# pm2 list

# 查看端口监听状态
a=$(netstat -pan | grep 10001)
if [[ -z "$a" ]]; then
  echo "端口10001未被监听，项目运行失败"
  echo "请联系十七散人：1052886775"
else
  PUB_IP=$(/usr/bin/curl -s icanhazip.com)
  echo "简单网盘启动成功"
  echo "请前往阿里云服务器开放指定端口，见证奇迹！"
  echo "开放端口后可尝试在浏览器中打开网址 http://${PUB_IP}:10001/download/succ.txt，下载默认文件"
fi
